/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.bitoon.basketdudes.ws;

import com.bitoon.basketdudes.jpa.CartaEquipo;
import com.bitoon.basketdudes.jpa.Equipo;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.apache.log4j.*;


/**
 * @author Paco FELC 2012
 */
public class Util {

    static Logger  m_log = Logger.getLogger(Competicion.class);

    public static String FechaFormateada ( Date p_fecha ) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

        return sdf.format(p_fecha);
    }


    /* Devuelve una fecha n días posterior a la actual
     * si el parámetro es negativo devuelve una fecha n días anterior
     */
    public static Date FechaSiguiente ( int p_dias ) {

	Date f_actual = Calendar.getInstance().getTime();
	long tiempoActual = f_actual.getTime();
	long dias = p_dias * (long)24 * (long)60 * (long)60 * (long)1000;

        Date f_anterior = new Date(tiempoActual + dias);

        return f_anterior;
    }

    public static Date MachacaConHora ( Date p_fecha ){
        Calendar ahora = Calendar.getInstance();
        ahora.setTime(p_fecha);

        ahora.set(Calendar.HOUR_OF_DAY, 2);
        ahora.set(Calendar.MINUTE, 30);
        ahora.set(Calendar.SECOND, 0);
//log.debug(ahora.YEAR+"/"+ahora.MONTH+"/"+ahora.DAY_OF_MONTH+" "+ahora.HOUR_OF_DAY+":"+ahora.MINUTE+":"+ahora.SECOND);

        return ahora.getTime();
    }

    public static Date TruncaDia ( Date p_fecha ){
        Calendar ahora = Calendar.getInstance();
        ahora.setTime(p_fecha);

        ahora.set(Calendar.HOUR_OF_DAY, 0);
        ahora.set(Calendar.MINUTE, 0);
        ahora.set(Calendar.SECOND, 0);
        ahora.set(Calendar.MILLISECOND, 0);

        return ahora.getTime();
    }

    public static CartaEquipo BuscarCartaEquipo( EntityManager em, int equipo_id, int carta_id ){

        // Buscamos carta de quitar tatuaje
        Query q8 = em.createNamedQuery("CartaEquipo.findByEquipoIdCartaId");
        q8.setParameter("equipoId", equipo_id);
        q8.setParameter("cartaId", carta_id);
        List<CartaEquipo> lista_carta = q8.getResultList();

        if (lista_carta.isEmpty()){
            return null;
        } else {
            return lista_carta.get(0);
        }
    }

    public static int getCategoriaEquipo( Equipo p_equipo ) {
        // Star
        if ( p_equipo.getNivel()>14)
            return 4;
        // Pro 12-14
        if ( p_equipo.getNivel()>11)
            return 3;
        //Medio 8-11
        if ( p_equipo.getNivel()>7)
            return 2;
        // Novatos 1-7
        return 1;

    }

    public static void anidadas ( Exception e, String etiqueta) {

        try {
            if ( e.getClass() == SQLException.class ) {
                // Comprobamos si hay excepciones anidadas
                SQLException ex= (SQLException)e;
                SQLException nestedException = ex.getNextException();
                while ( nestedException != null ) {
                    m_log.error(etiqueta, nestedException );                    
                } 
            }
        } catch ( Exception ee ) {}
    }
    
/*
    public static int BuscarValorConfiguracionInteger ( String clave ) {
        int valor=0;

        try {
            ClassLoader loader = LoginAction.class.getClassLoader();
            if (loader==null) {
                loader = ClassLoader.getSystemClassLoader();
            }

            String propFile = "config.properties";
            java.net.URL url = loader.getResource(propFile);
            Properties configuracion= new Properties();

            configuracion.load(url.openStream());

            valor=Integer.parseInt (configuracion.getProperty( clave ) );
            log.debug( clave + " : " + valor );


        } catch (Exception e) {
            log.error("<<Could not load configuration key>>: "+clave ,e);
        }


        return valor;
    }
*/


}
